package com.ruoyi.system.designpattern.observer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * @author created by Zhou Zongbo on 2025/8/28.
 */public class Store {
    /**
     * 商品中的商品信息
     */
     private final Map<String, Product> productMap = new HashMap<>();

     private final List<Observer> observerList = new ArrayList<>();

    /**
     * 商品上架
     * @param product product
     */
     public void addProduct(Product product) {
         productMap.put(product.getName(), product);
     }

     public void updateProduct(Product product) {
         Product product1 = productMap.get(product.getName());
         if (!Objects.equals(product1.getPrice(), product.getPrice())) {
             // 当商品价格发生改变时，通知观察者们，也可以是订阅该商品的客户、商家、管理员
            observerList.forEach(observer -> observer.priceUpdate(product));
         }
     }

    /**
     * 商品下架
     * @param product product
     */
     public void removeProduct(Product product) {
         productMap.remove(product.getName());
     }

    /**
     * 添加观察者
     * @param observer observer
     */
     public void addObserver(Observer observer) {
         observerList.add(observer);
     }
}
